package com.punai.gk.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.punai.common.core.mapper.CommonMapper;
import com.punai.gk.domain.GkUseData;
import com.punai.gk.domain.vo.SimplifyVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 归口数据Mapper接口
 *
 * @author ruoyi
 * @date 2023-01-06
 */
public interface GkUseDataMapper extends CommonMapper<GkUseData>
{
    /**
     * 查询归口数据
     *
     * @param id 归口数据主键
     * @return 归口数据
     */
    public GkUseData selectGkUseDataById(String id);

    /**
     * 查询归口数据列表
     *
     * @param gkUseData 归口数据
     * @return 归口数据集合
     */
    public List<GkUseData> selectGkUseDataList(GkUseData gkUseData);

    public List<String> selectLinkIdList(@Param("companyId") Long companyId);


    /**
     * 删除归口数据
     *
     * @param id 归口数据主键
     * @return 结果
     */
    public int deleteGkUseDataById(String id);

    /**
     * 批量删除归口数据
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteGkUseDataByIds(String[] ids);

    public String selectNameById(@Param("linkId") String linkId, @Param("companyId") Long companyId);

    public List<SimplifyVo> selectIdNameList(@Param("companyId") Long companyId);

    public List<SimplifyVo> getSimplifyVoByIds(@Param("ids") List<String> ids,@Param("companyId") Long companyId);

    // 属于Asset的三个方法,调用的普耐的库,为了解决模块互相依赖问题
    @InterceptorIgnore(blockAttack = "true")
    void delAssetExpenseCategoriesLinkGk(@Param("linkId") String linkId);
    @InterceptorIgnore(blockAttack = "true")
    void delAssetGxLinkGkLinkGk(@Param("linkId") String linkId);
    @InterceptorIgnore(blockAttack = "true")
    void delAssetGxLinkGkCategoriesLinkGk(@Param("linkId") String linkId);


    // 属于Cus的三个方法,调用的客户的库,为了解决模块互相依赖问题
    void delCusExpenseCategoriesLinkGk(@Param("linkId") String linkId, @Param("companyId") Long companyId);

    void delCusGxLinkGkLinkGk(@Param("linkId") String linkId, @Param("companyId") Long companyId);

    void delCusGxLinkGkCategoriesLinkGk(@Param("linkId") String linkId, @Param("companyId") Long companyId);

    List<GkUseData> selectListExp(@Param("companyId") Long companyId);

    String ifExistFee(@Param("companyId")Long companyId);

    Integer checkDataCY(@Param("companyId") Long companyId,@Param("id")String id,@Param("dropId")String dropId);

    Integer moveDataXY(@Param("companyId") Long companyId,@Param("id")String id,@Param("dropId")String dropId);
}
